package com.huiminpay.transaction.service;

import com.huiminpay.transaction.api.dto.PayChannelDTO;
import com.huiminpay.transaction.api.dto.PayChannelParamDTO;
import com.huiminpay.transaction.api.dto.PlatformChannelDTO;

import java.util.List;

/**
 * @author amx
 * @date 2020/12/6 22:23
 */
public interface PlatformChannelServiceApi {

	/**
	 * 获取服务类型列表信息
	 *
	 * @return 服务类型列表
	 */
	List<PlatformChannelDTO> getAllPlatformChannel();


	/**
	 * 查看应用是否绑定该服务类型
	 *
	 * @param appId               appId
	 * @param platformChannelCode platformChannelCode
	 * @return 1 = 已绑定；2 = 未绑定
	 */
	Integer existBindPlatformForApp(String appId, String platformChannelCode);

	/**
	 * 根据惠民支付服务类型code查询第三方支付渠道列表信息
	 *
	 * @param platformChannelCode platformChannelCode
	 * @return PayChannelDTOList
	 */
	List<PayChannelDTO> queryPayChannelByPlatformChannel(String platformChannelCode);


	/**
	 * 为应用绑定服务类型
	 *
	 * @param appId               appId
	 * @param platformChannelCode platformChannelCode
	 */
	void bindPlatformForApp(String appId, String platformChannelCode);

	/**
	 * 保存第三方支付渠道参数信息
	 *
	 * @param payChannelParamDTO payChannelParamDTO
	 * @return PayChannelParamDTO
	 */
	PayChannelParamDTO savePayChannelParam(PayChannelParamDTO payChannelParamDTO);


	/**
	 * 获取指定应用指定服务类型下所包含的某个原始支付参数
	 *
	 * @param appId           appId
	 * @param platformChannel platformChannel
	 * @param payChannel      payChannel
	 * @return PayChannelParamDTO
	 */
	PayChannelParamDTO queryParamByAppPlatformAndPayChannel(String appId, String platformChannel, String payChannel);

	/**
	 * 获取指定应用指定服务类型下所包含的原始支付渠道参数列表
	 *
	 * @param appId           应用id
	 * @param platformChannel 服务类型
	 * @return PayChannelParamDTOList
	 */
	List<PayChannelParamDTO> queryPayChannelParamByAppAndPlatform(String appId, String platformChannel);


}
